মেশিন লার্নিংয়ে, ডেটা প্রি-প্রসেসিং একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষ করে যখন ডেটায় ক্যাটেগরিক্যাল (ক্যাটাগরি বা শ্রেণীভিত্তিক) বৈশিষ্ট্য থাকে। ক্যাটেগরিক্যাল বৈশিষ্ট্য মেশিন লার্নিং মডেলে সরাসরি ব্যবহৃত হতে পারে না, তাই এগুলোকে সংখ্যাগত (নমেরিক) ফর্মে রূপান্তর করতে হয়। Feature Encoding এই কাজটি করে, যা ক্যাটেগরিক্যাল ডেটাকে একটি সংখ্যায় রূপান্তরিত করে, যাতে মডেল এটি বুঝতে পারে এবং সঠিকভাবে কাজ করতে পারে।
বিভিন্ন ধরনের ফিচার এনকোডিং পদ্ধতি রয়েছে, তবে সবচেয়ে জনপ্রিয় দুটি হল Label Encoding এবং One-Hot Encoding। আসুন, এদের সম্পর্কে বিস্তারিত আলোচনা করি:
Label Encoding একটি সোজা পদ্ধতি, যেখানে প্রতিটি ক্যাটেগরিক্যাল মানকে একটি ইউনিক সংখ্যা দ্বারা রূপান্তরিত করা হয়। উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color
থাকে এবং এর মধ্যে Red
, Green
, এবং Blue
এই মানগুলো থাকে, তাহলে প্রতিটি মানকে একটি সংখ্যা দিয়ে প্রতিস্থাপন করা হয়:
Red
-> 0Green
-> 1Blue
-> 2এই প্রক্রিয়ায় প্রতিটি ক্যাটেগরিক্যাল ভ্যালু একটি নির্দিষ্ট সংখ্যা দ্বারা প্রতিস্থাপিত হয়। তবে, Label Encoding সাধারণত শুধুমাত্র একধরনের ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য ভাল কাজ করে, যেগুলোতে অর্ডার বা ধারাবাহিকতা থাকে (যেমন, Low
, Medium
, High
)। যদি ক্যাটেগরিক্যাল ডেটার মধ্যে কোনো প্রাকৃতিক অর্ডার না থাকে, তবে Label Encoding মডেলের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
from sklearn.preprocessing import LabelEncoder
# ডেটা তৈরি
categories = ['Red', 'Green', 'Blue', 'Green', 'Red']
# LabelEncoder অবজেক্ট তৈরি
encoder = LabelEncoder()
# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)
print(encoded_categories) # আউটপুট: [2 1 0 1 2]
One-Hot Encoding একটি জনপ্রিয় পদ্ধতি যেখানে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি নতুন কলাম তৈরি করা হয় এবং একটি নির্দিষ্ট ক্যাটেগরি উপস্থিত থাকলে সেই কলামে 1
প্রদান করা হয়, অন্যথায় 0
প্রদান করা হয়।
উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color
থাকে এবং এর মধ্যে Red
, Green
, এবং Blue
এই মানগুলো থাকে, তখন One-Hot Encoding এইভাবে কাজ করবে:
Color | Red | Green | Blue |
---|---|---|---|
Red | 1 | 0 | 0 |
Green | 0 | 1 | 0 |
Blue | 0 | 0 | 1 |
Green | 0 | 1 | 0 |
Red | 1 | 0 | 0 |
এখানে, Color
বৈশিষ্ট্যের জন্য তিনটি নতুন কলাম তৈরি করা হয়েছে (Red
, Green
, Blue
), এবং ডেটার মধ্যে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি 1
দেয়া হয়েছে, এবং অন্যান্য কলামে 0
রাখা হয়েছে।
One-Hot Encoding সাধারণত সেইসব ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য উপযুক্ত, যেগুলোর মধ্যে কোনো প্রাকৃতিক অর্ডার নেই এবং প্রতিটি ক্যাটেগরি সমান গুরুত্ব বহন করে।
from sklearn.preprocessing import OneHotEncoder
import numpy as np
# ডেটা তৈরি
categories = [['Red'], ['Green'], ['Blue'], ['Green'], ['Red']]
# OneHotEncoder অবজেক্ট তৈরি
encoder = OneHotEncoder(sparse=False)
# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)
print(encoded_categories)
আউটপুট:
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
বৈশিষ্ট্য | Label Encoding | One-Hot Encoding |
---|---|---|
ডেটা রূপান্তর | একটি সংখ্যায় রূপান্তর করা হয় | নতুন কলাম তৈরি করে প্রতিটি মানকে 1 অথবা 0 এ রূপান্তর করা হয় |
যেমন সমস্যা | অর্ডার বা র্যাঙ্কিংয়ের জন্য ভালো | যখন কোনো প্রাকৃতিক অর্ডার না থাকে |
অতিরিক্ত কলাম | কোনো অতিরিক্ত কলাম তৈরি হয় না | প্রতিটি ক্যাটেগরি জন্য একটি কলাম তৈরি হয় |
ব্যবহারযোগ্যতা | ক্যাটেগরি যদি অর্ডার থাকে তবে ভালো | ক্যাটেগরি যদি অর্ডার না থাকে তবে ভালো |
গুরুত্ব | কখনও কখনও মডেল অস্বাভাবিক আচরণ করতে পারে | মডেল প্যারামিটারগুলি একে অপরের সাথে প্রতিযোগিতার সৃষ্টি করতে পারে না |
Low
, Medium
, High
।Read more